package com.nowcoder.community.dao;

import com.nowcoder.community.entity.Message;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface MessageMapper {
    /**
     * 查询当前用户的会话列表,针对每个会话只返回一条最新的私信.
     * @author ProgramCat
     * @date 2023/3/31 22:02
     * @param userId 用户id
     * @param offset 起始行
     * @param limit 每页显示上限
     * @return List<Message>
     */
    List<Message> selectConversations(int userId,int offset,int limit);

     /**
      * 查询当前用户的会话数量.
      * @author ProgramCat
      * @date 2023/3/31 23:55
      * @param userId 用户id
      * @return int
      */
    int selectConversationCount(int userId);

    /**
     * 查询某个会话所包含的私信列表.
     * @author ProgramCat
     * @date 2023/3/31 23:50
     * @param conversationId 会话id
     * @param offset 起始行
     * @param limit 每页数量
     * @return List<Message>
     */
    List<Message> selectLetters(String conversationId, int offset, int limit);

    /**
     *查询某个会话所包含的私信数量.
     * @author ProgramCat
     * @date 2023/3/31 22:12
     * @param conversationId 会话id
     * @return int 会话所包含的私信数量
     */
    int selectLetterCount(String conversationId);



    /**
     * 查询未读私信的数量
     * @author ProgramCat
     * @date 2023/3/31 22:13
     * @param userId 用户id
     * @param conversationId 会话 id
     * @return int 未读私信的数量
     */
    int selectLetterUnreadCount(int userId, String conversationId);

    /**
     *新增 私聊消息
     * @author ProgramCat
     * @date 2023/3/31 22:15
     * @param message 会话
     * @return int
     */
    int insertMessage(Message message);

    /**
     * 批量修改消息的状态
     * @author ProgramCat
     * @date 2023/3/31 23:51
     * @param ids 消息集合
     * @param status  是否被读状态
     * @return int
     */
    int updateStatus(List<Integer> ids, int status);

}
